from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

DB_URI = "mysql+asyncmy://root:hj123456@127.0.0.1:3306/python_db?charset=utf8mb4"

engine = create_async_engine(
    DB_URI,
    # 输出所有执行SQL的日志（默认关闭 False）
    echo=True,
    # 连接池大小,默认5个
    pool_size=10,
    # 允许连接池最大连接数,默认 10个
    max_overflow=20,
    # 获得连接超时时间，默认30s
    pool_timeout=10,
    # 连接回收时间，默认-1永不回收
    pool_recycle=3600,
    # 连接前是否预检查，默认False
    pool_pre_ping=True,
)

AsyncSessionFactory = sessionmaker(
    # Engine或者其子类对象（这里是AsyncEngine）
    bind=engine,
    # Session类的代替（默认是Session类）
    class_=AsyncSession,
    # 是否在查找之前执行flush操作（默认是True）
    autoflush=True,
    # 是否在执行commit操作后Session就过期（默认True）
    expire_on_commit=False,
)

Base = declarative_base()

# 导入其它模型的python文件
from . import students,courses,articles